package datosClient;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Daniela
 */

import java.util.*;
import java.lang.Math;

public class ListaPieza {
    private List <Pieza> piezas;


    public ListaPieza() {
        piezas = new ArrayList();
    }

    public List<Pieza> getPiezas() {
        return piezas;
    }

    public void setPiezas(List<Pieza> piezas) {
        this.piezas = piezas;
    }

     public Iterator getIterator()
    {
        return piezas.iterator();
    }




    public boolean agregarElemento(Pieza objeto){
        return piezas.add(objeto);

    }


    public int tamañoDeLista()
    {
        return piezas.size();

    }


     public void imprimirColeccion()
     {
        int i;
        Pieza registro;

        /*
         * Se define un arreglo de tipo Object (la clase genérica Java)
         */
        Object [] arreglo;

        /*
         * Se convierte la colección pasada como parámetro a un array, que
         * es asignado al arreglo de tipo Object
         */
        arreglo = piezas.toArray();

        System.out.println("DATOS");

        /*
         * Se hace un recorrido del arreglo de tipo Object y se imprime
         * la información de la casilla i
         */
        for(i=0 ; i<arreglo.length ; i++)
        {
            registro = (Pieza) arreglo[i];
            System.out.println("ValorSuperior: " + registro.getValSuperior());
            System.out.println("ValorInferior: " + registro.getValInferior());
            System.out.println("ID: " + registro.getID());
            System.out.println("pathA   " + registro.getImagenA());
            System.out.println("pathB   " + registro.getImagenB());
            System.out.println("pathC   " + registro.getImagenI());
            System.out.println("pathD   " + registro.getImagenD());
            System.out.println();
        }

        System.out.println("\n\n");


    }

    /* Funcion que inicializa las piezas con un valor del 0 al 6   */
/*    public ListaPieza inicializarPiezas(){
        int i, j, cont;
        cont = 0;

        Pieza pieza;

                for (i = 0; i <= 6; i++){
                    if (i >= 1)
                        cont = i;
                    for (j = cont; j <= 6; j++){
                         pieza = new Pieza(i,j,false,false,false);
                         this.agregarElemento(pieza);
                    }
                }
        return this;
    }
*/

    public boolean removerElemento(Pieza objeto)
    {
        boolean encontrado = false;
        Pieza auxiliar = null;

        /*
         * Se define un iterador inicializado con el iterador de la colección
         */
        Iterator iterador = piezas.iterator();
        //System.out.println("valor del iterador = \n\n" + iterador);

        /*
         * Mientras no se encuentre el elemento y existan mas elementos en la
         * colección, se sigue entrando en el ciclo
         */
        while (!encontrado && iterador.hasNext())
        {
            /*
             *  Se obtiene el siguiente objeto del iterador y se le hace un cast
             *  para asignarlo al objeto de tipo Nodo
             */
            auxiliar = (Pieza) iterador.next();
            //System.out.println("auxiliar = " + auxiliar);
            //System.out.println("objeto = " + objeto);
            /*
             * Se invoca al método equals de la clase Nodo para determinar si son
             * iguales. En caso de serlo, se encontró el elemento buscado
             */
            if (objeto.equals(auxiliar))
                encontrado = true;
        }

        /*
         * Si se encontró el elemento, se procede a ejecutar el remove
         */
        //System.out.println("lo encontro = " + encontrado);
        if (encontrado)
        {

            if (piezas.remove(auxiliar))
                return true;
        }

        return false;
    }

    public Pieza obtenerObjetodelaaCasillaConID(int IDpieza)
    {
        Iterator iterador = piezas.iterator();

        Pieza retorno = null;

        while (iterador.hasNext())
        {
            retorno = (Pieza) iterador.next();

            if (retorno.getID() == IDpieza)
               return retorno;
        }

        return null;


    }



    public Pieza obtenerObjetoDeLaCasilla(int posicion){
        Pieza objeto, aux;
        //int i = 0;
        aux = objeto = null;
        //Iterator iterador = piezas.iterator();


       // System.out.println("\n\n\nposicion = " + posicion);
        //System.out.println("piezas------------    " + piezas);
        //if (posicion == 0)
            objeto = piezas.get(posicion);
       /* else
        {
        /*    while (i <= posicion) {

               aux = (Pieza) iterador.next();
               //System.out.println("aux---> " + aux +  "i = " + i);
               objeto = new Pieza(aux.getID(),aux.getValSuperior(),aux.getValInferior(),aux.getImagenA(),aux.getImagenB(), aux.getImagenI(),aux.getImagenD());
               //System.out.println("objeto---> " + objeto);
               i++;
            }
        }*/
        //System.out.println("objeto---------------> " + objeto);
        return objeto;

    }




    /*public ListaPieza generarPiezasAleatorias(){
        int cont, posicion;
        Pieza pieza = null;
        boolean valor = false;
        ListaPieza piezasJugador = new ListaPieza();
        posicion = 0;
        cont = 1;

        while (cont <= 7) {
             posicion = (int) (Math.random() * piezas.size());
             pieza = obtenerObjetoDeLaCasilla(posicion);
             //System.out.println("tamaño de piezas " + piezas.size());
             //System.out.println("pieza---> " + pieza);
             piezasJugador.agregarElemento(pieza);
             valor = this.removerElemento(pieza);
            /* if (valor == true)
                 System.out.println("Si se borro\n");
             else
                 System.out.println("No se borro\n");
             *
             */
       /*      cont++;
        }

        return piezasJugador;

    }*/


    public String devolverListaDePiezas()
    {
        String resultado = "";
        int i = 0;
        Pieza aux = null;

        while (i < piezas.size() )
        {
            aux = (Pieza) piezas.get(i);

            if (i != piezas.size() - 1)
                resultado += aux.getID() + "-" + aux.getValSuperior() + "-" + aux.getValInferior() + "-" + aux.getImagenA() + "-" + aux.getImagenB() + "-" + aux.getImagenI() + "-" + aux.getImagenD() + ":";
            else
                resultado += aux.getID() + "-" + aux.getValSuperior() + "-" + aux.getValInferior() + "-" + aux.getImagenA() + "-" + aux.getImagenB() + "-" + aux.getImagenI() + "-" + aux.getImagenD();

            i++;
        }

        return resultado;
    }


}